<?php

class WorkBlockModel extends CI_Model{

    function __construct()
    {
        parent::__construct();
        $this->table_work_block = 'bloque_trabajo';
    }
    
    //Obtener Bloques de Trabajo mediante el Id del Horario
    function getWBByScheduleId($scheduleId){
        $this->db->from($this->table_work_block);
        $this->db->where($this->table_work_block.'.ID_HORARIO',$scheduleId);
        $query = $this->db->get();
        return $query->result();
    }
    
    //Obtener los bloques de trabajo afectados por la "hora inicial" en los horarios que están a MENOS de 7 días de culminar
    function getWBAffectedByStartTimeLess7($startTime, $scheduleId, $dayNumbers){
        $this->db->select($this->table_work_block.'.ID_HORARIO, '.
                $this->table_work_block.'.ID_BLOQUE_TRABAJO, '.
                $this->table_work_block.'.hora_inicio, '.
                $this->table_work_block.'.hora_fin');
        $this->db->from($this->table_work_block);
        $this->db->where($this->table_work_block.'.ID_HORARIO', $scheduleId);
        $this->db->where($this->table_work_block.'.hora_inicio <', $startTime);
        $this->db->where_in($this->table_work_block.'.dia', $dayNumbers);
        $query = $this->db->get();
        return $query->result();
    }
    
    //Obtener los bloques de trabajo afectados por la "hora final" en los horarios que están a MENOS de 7 días de culminar
    function getWBAffectedByEndTimeLess7($endTime, $scheduleId, $dayNumbers){
        $this->db->select($this->table_work_block.'.ID_HORARIO, '.
                $this->table_work_block.'.ID_BLOQUE_TRABAJO, '.
                $this->table_work_block.'.hora_inicio, '.
                $this->table_work_block.'.hora_fin');
        $this->db->from($this->table_work_block);
        $this->db->where($this->table_work_block.'.ID_HORARIO', $scheduleId);
        $this->db->where($this->table_work_block.'.hora_fin >', $endTime);
        $this->db->where_in($this->table_work_block.'.dia', $dayNumbers);
        $query = $this->db->get();
        return $query->result();
    }
    
    //Obtener los bloques de trabajo afectados por la "hora inicial" en los horarios que están a MÁS de 7 días de culminar
    function getWBAffectedByStartTime($startTime){
        $schedulesIds = array();
        $schedules = $this->ScheduleModel->getUnfinishedSchedulesMore7Days();
        if($schedules != null){
            foreach ($schedules as $sch) {
                $schedulesIds[] = $sch->ID_HORARIO;
            }
            $this->db->select($this->table_work_block.'.ID_HORARIO, '.
               $this->table_work_block.'.ID_BLOQUE_TRABAJO, '.
               $this->table_work_block.'.hora_inicio, '.
               $this->table_work_block.'.hora_fin');
            $this->db->from($this->table_work_block);
            $this->db->where_in($this->table_work_block.'.ID_HORARIO', $schedulesIds);
            $this->db->where($this->table_work_block.'.hora_inicio <', $startTime);
            $query = $this->db->get();
            return $query->result();
        }else{
            return null;
        }
    }
    
    //Obtener los bloques de trabajo afectados por la "hora final" en los horarios que están a MÁS de 7 días de culminar
    function getWBAffectedByEndtime($endTime){
        $schedulesIds = array();
        $schedules = $this->ScheduleModel->getUnfinishedSchedulesMore7Days();
        if($schedules != null){
            foreach ($schedules as $sch) {
                $schedulesIds[] = $sch->ID_HORARIO;
            }
            $this->db->select($this->table_work_block.'.ID_HORARIO, '.
               $this->table_work_block.'.ID_BLOQUE_TRABAJO, '.
               $this->table_work_block.'.hora_inicio, '.
               $this->table_work_block.'.hora_fin');
            $this->db->from($this->table_work_block);
            $this->db->where_in($this->table_work_block.'.ID_HORARIO', $schedulesIds);
            $this->db->where($this->table_work_block.'.hora_fin >', $endTime);
            $query = $this->db->get();  
            return $query->result();
        }else{
            return null;
        }
    }
}
?>